<?php
/* Генерация PDF отчета по пользователям
 *  dateStart   : YYYY-MM-DD HH:MM:SS
 *      начальная дата
 *  dateEnd     : YYYY-MM-DD HH:MM:SS
 *      конечная дата
 * !! Даты не проверяются на корректность...
 */
require_once 'lib/pdf/tcpdf.php'; // подключаем библиотеку
require_once 'connect.php';


$mysql = connect();
$query = "SET NAMES 'utf8'";
$mysql->query($query);

$query = "SELECT MAX(`MMDDTT`) AS `maxDate`, min(`MMDDTT`) as `minDate` FROM CallLog";
$result = $mysql->query($query) or die("Can't conect");
$dates = $result->fetch_array(MYSQLI_ASSOC);
$maxDate = $dates["maxDate"];
$minDate = $dates["minDate"];

$dateStart = isset($_REQUEST["dateStart"])? $_REQUEST["dateStart"] : $minDate;
$dateEnd = isset($_REQUEST["dateEnd"]) ? $_REQUEST["dateEnd"] : $maxDate;

// создаем таблицу пользователей с общим временем по каждому пользователю
$dom = new DOMDocument();
$generalTable = $dom->createElement("table");
 // установим аттрибуты для таблицы
$attr = $dom->createAttribute("border");
$attr->value = "1";
$generalTable->appendChild($attr);//border="1"

$attr = $dom->createAttribute("width");
$attr->value = 440;
$generalTable->appendChild($attr);//width="540"


$query = "SELECT * ,
            (SELECT sec_to_time( sum( time_to_sec( DURATION ) ) )
            FROM CallLog
            WHERE   (`Users`.`NUMBER` = `CallLog`.`EXT`)
                    AND (`MMDDTT` BETWEEN '$dateStart' AND '$dateEnd'))
            AS TOTALTIME
          FROM Users
          ORDER BY `NAME`";
$result = $mysql->query($query);
while ($row = $result->fetch_array(MYSQLI_ASSOC)){
	$tr = $dom->createElement("tr");
	$generalTable->appendChild($tr);

	$userNameTd = $dom->createElement("td", $row["NAME"]);
	$tr->appendChild($userNameTd);
 // Атрибуты
    // Выравнивание по левому краю
    $attr = $dom->createAttribute("align");
    $attr->value = "left";
    $userNameTd->appendChild($attr);
    // Ширина
    $attr = $dom->createAttribute("width");
    $attr->value = "70%";
    $userNameTd->appendChild($attr);

	$totalTimeTd = $dom->createElement("td", $row["TOTALTIME"]);
	$tr->appendChild($totalTimeTd);
  // Атрибуты
    // Выравнивание по левому краю
    $attr = $dom->createAttribute("align");
    $attr->value = "center";
    $totalTimeTd->appendChild($attr);
    // Ширина
    $attr = $dom->createAttribute("width");
    $attr->value = "30%";
    $tr->appendChild($attr);

	// Для каждого пользователя сформируем таблицу с его звонками
	$query = "SELECT DIALED, DURATION, MMDDTT, EXT
		  		FROM CallLog
		  		WHERE (EXT=".$row["NUMBER"].") AND (`MMDDTT` BETWEEN '$dateStart' AND '$dateEnd')
                ORDER BY `MMDDTT`";
	$usersResult = $mysql->query($query);
	$userTable = $dom->createElement("table");
 // установим аттрибуты для таблицы
	$attr = $dom->createAttribute("border");
	$attr->value = "1";
	$userTable->appendChild($attr);//border="1"

	$attr = $dom->createAttribute("width");
	$attr->value = 540;
	$userTable->appendChild($attr);//width="540"

	// заголовок для таблицы
	$tr = $dom->createElement("tr");
	$userTable->appendChild($tr);

	$headerTd = $dom->createElement("td", $row["NAME"]);
	$tr->appendChild($headerTd);
	// Выравнивание по левому краю
	$attr = $dom->createAttribute("align");
	$attr->value = "center";
	$headerTd->appendChild($attr);
	// Ширина
	$attr = $dom->createAttribute("colSpan");
	$attr->value = "3";
	$headerTd->appendChild($attr);

	while($userRow = $usersResult->fetch_array(MYSQLI_ASSOC)){
		$tr = $dom->createElement("tr");
		$userTable->appendChild($tr);

		$dialedNumTd = $dom->createElement("td", $userRow["DIALED"]);
		$tr->appendChild($dialedNumTd);
	 // Атрибуты
	    // Выравнивание по левому краю
	    $attr = $dom->createAttribute("align");
	    $attr->value = "left";
	    $dialedNumTd->appendChild($attr);
	    // Ширина
	    $attr = $dom->createAttribute("width");
	    $attr->value = "40%";
	    $dialedNumTd->appendChild($attr);

		$durationTd = $dom->createElement("td", $userRow["DURATION"]);
		$tr->appendChild($durationTd);
	  // Атрибуты
	    // Выравнивание по левому краю
	    $attr = $dom->createAttribute("align");
	    $attr->value = "center";
	    $durationTd->appendChild($attr);
	    // Ширина
	    $attr = $dom->createAttribute("width");
	    $attr->value = "30%";
	    $durationTd->appendChild($attr);

		$dialTimeTd = $dom->createElement("td", $userRow["MMDDTT"]);
		$tr->appendChild($dialTimeTd);
	  // Атрибуты
	    // Выравнивание по левому краю
	    $attr = $dom->createAttribute("align");
	    $attr->value = "center";
	    $dialTimeTd->appendChild($attr);
	    // Ширина
	    $attr = $dom->createAttribute("width");
	    $attr->value = "30%";
	    $dialTimeTd->appendChild($attr);
	}
	$userTablesHTML[]=$dom->saveXML($userTable);
}
$generalTableHtml = $dom->saveXML($generalTable);

//Формируем PDF документ ------------------------------------------------------
$pdf = new TCPDF("P", 'mm', "A4", true, 'UTF-8', false);
// отключаем хидер и футер
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->AddPage();

$pdf->SetTextColor(0, 0, 0); // устанавливаем цвет текста (черный)
$pdf->SetFont('tahoma', '', 10);
$pdf->SetXY(50, 10);
$pdf->Write(10, "Звонки за период $dateStart - $dateEnd");
$pdf->SetFont('tahoma', '', 9);
$pdf->SetXY(13, 20);
$pdf->writeHTML($generalTableHtml, false, true, true);
$pdf->AddPage();

$iMax = count($userTablesHTML);
for($i=0; $i<$iMax;$i++){
    $pdf->SetY($pdf->GetY()+2);
	$pdf->writeHTML($userTablesHTML[$i], false, true, true);
}

$pdf->Output('phonebook.pdf','D');
?>